/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import Utilidades.VariaveisEstaticas;
import dao.ManterChequeDao;
import dominio.Cheque;
import dominio.Compra;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.RollbackException;

/**
 *
 * @author Huliane
 */
public class ManterChequeNegocio {

    private ManterChequeDao manterChequeDAO;
    private Cheque cheque;
    private Compra compra;
    private ArrayList<Cheque> cheques;
    private boolean Cheque;

    public ManterChequeNegocio() {
        manterChequeDAO = new ManterChequeDao();
        cheque = new Cheque();

    }

    /**
     * Método que irá chamar o create() do DAO, armazenando o produto no BD.
     *@param produto Produto
     * @return SUCESSO(1) caso o produto seja inserido com êxito; ERRO_DUPLICAÇÃO(2) caso ocorra
     * o produto já exista; ERRO_BD(3) erro de persistência.
     */
    public int create(Cheque cheque) {
        for (Cheque c : findChequeEntities()) {
            if (cheque.getAgencia() == c.getAgencia() && cheque.getConta().equals(c.getConta()) && cheque.getNumCheque() == c.getNumCheque()) {
                return VariaveisEstaticas.ERRO_DUPLICACAO;
            } else {
                cheque.setCompra(compra);
                manterChequeDAO.create(cheque);

                return VariaveisEstaticas.SUCESSO;
            }

        }
        try {

            manterChequeDAO.create(cheque);
            return VariaveisEstaticas.SUCESSO;

        } catch (RollbackException p) {
            return VariaveisEstaticas.ERRO_DUPLICACAO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }

    /**
     * Método que irá chamar o edit() do DAO, editando o produto no BD.
     *@param produto Produto
     * @return SUCESSO(1) int caso o produto seja inserido com êxito; ERRO_DUPLICAÇÃO(2) int caso ocorra
     * o produto já exista; ERRO_BD(3) int erro de persistência.
     */
    public int edit(Cheque cheque) {
        try {
            manterChequeDAO.edit(cheque);
            return VariaveisEstaticas.SUCESSO;
        } catch (RollbackException r) {
            return VariaveisEstaticas.ERRO_DUPLICACAO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }

    /**
     * Método que irá chamar o destroy() do DAO, deletando o produto no BD.
     * @param produto Produto
     * @return SUCESSO(1) int caso o produto seja inserido com êxito; ERRO_BD(3) int erro de persistência.
     */
    public int destroy(Cheque cheque) {
        try {
            manterChequeDAO.destroy(cheque.getId());
            return VariaveisEstaticas.SUCESSO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }

    /**
     * Método responsável por chamar o método findProdutoEntities() do DAO. Retorna uma lista de produtos.
     * @return List<Produto>
     */
    public List<Cheque> findChequeEntities() {
        return manterChequeDAO.findChequeEntities();
    }
}
